home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK2.toast / Development Kits (Disc 2) / Word Services SDK 1.0.8 / Writeswell Jr 1.2.3 Sources ƒ / Library Source / GoToWebPage.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-19  |  2.0 KB  |  107 lines  |  [TEXT/CWIE]

  1. /* GoToWebPage.c
  2.  * Launch a browser and go to a given URL
  3.  * Copyright ©1996 Michael D. Crawford.  All Rights Reserved.
  4.  * You may use this code on the condition that you read the following web page:
  5.  * http://www.scruznet.com/~crawford/WordServices/wdsvindex.html
  6.  */
  7.  
  8. #include "FindBrowser.h"
  9. #include "GoToWebPage.h"
  10.  
  11. #define kCannotFindBrowserID    1000
  12.  
  13. OSErr GoToWebPage( StringPtr urlStr )
  14. {
  15.     AEAddressDesc        creatorDesc;
  16.     AppleEvent    gurlEvt;
  17.     AppleEvent    replyEvt;
  18.     OSType        creator;
  19.     AEDesc        urlDesc;
  20.     long        len;
  21.     OSErr        err;
  22.     
  23.     err = FindBrowser( &creator );
  24.     
  25.     if ( err ){
  26.         return err;
  27.     }
  28.     
  29.     if ( creator == 'null' ){
  30.         ParamText( urlStr, "\p", "\p","\p" );
  31.         StopAlert( kCannotFindBrowserID, (ModalFilterUPP)NULL );
  32.         return noErr;
  33.     }
  34.     
  35.     err = AECreateDesc( typeApplSignature,
  36.                         (Ptr)&creator,
  37.                         sizeof( creator ),
  38.                         &creatorDesc );
  39.     if ( err )
  40.         return err;
  41.         
  42.     len = urlStr[ 0 ];
  43.     
  44.     err = AECreateDesc( typeChar,
  45.                         &( (urlStr)[ 1 ] ),
  46.                         len,
  47.                         &urlDesc );
  48.     if ( err )
  49.         return err;
  50.  
  51.  
  52.     if ( creator == 'MOS!' ){
  53.         // NCSA Mosaic has its own ideas for AE urls
  54.         err = AECreateAppleEvent( 'mos!',
  55.                                     'ourl',
  56.                                     &creatorDesc,
  57.                                     kAutoGenerateReturnID,
  58.                                     kAnyTransactionID,
  59.                                     &gurlEvt );
  60.     }else{
  61.         err = AECreateAppleEvent( 'GURL',
  62.                                     'GURL',
  63.                                     &creatorDesc,
  64.                                     kAutoGenerateReturnID,
  65.                                     kAnyTransactionID,
  66.                                     &gurlEvt );
  67.     }
  68.     if ( err )
  69.         return err;
  70.     
  71.     err = AEDisposeDesc( &creatorDesc );
  72.     if ( err )
  73.         return err;
  74.  
  75.     err = AEPutParamDesc( &gurlEvt,
  76.                             keyDirectObject,
  77.                             &urlDesc );
  78.                             
  79.     if ( err )
  80.         return err;
  81.     
  82.     err = AEDisposeDesc( &urlDesc );
  83.     if ( err )
  84.         return err;
  85.  
  86.     err = AESend( &gurlEvt,
  87.                     &replyEvt,
  88.                     kAEWaitReply + kAECanInteract + kAECanSwitchLayer,
  89.                     kAENormalPriority,
  90.                     300,
  91.                     (AEIdleUPP)NULL,
  92.                     (AEFilterUPP)NULL );
  93.     
  94.     if ( err ){
  95.         return err;
  96.     }
  97.     
  98.     err = AEDisposeDesc( &gurlEvt );
  99.     if ( err )
  100.         return noErr;
  101.     
  102.     err = AEDisposeDesc( &replyEvt );
  103.     if ( err )
  104.         return noErr;
  105.     
  106.     return noErr;
  107. }